package ca.concordia.soen6461.wichf.service;

import java.util.Date;

import ca.concordia.soen6461.wichf.entity.ScheduledEvent;
import ca.concordia.soen6461.wichf.entity.User;

public interface SchedulingService {
	
	public static final int ROOM_COUNT = 1;
	
	public static class ClinicStatus {
		
		private ScheduledEvent appointment;
		private boolean availability;
		private boolean exhaustedCheckups;

		public ClinicStatus(ScheduledEvent appointment, boolean hasAvailability, boolean exhaustedCheckups) {
			this.appointment = appointment;
			this.availability = hasAvailability;
			this.exhaustedCheckups = exhaustedCheckups;
		}

		public ScheduledEvent getAppointment() {
			return appointment;
		}

		public boolean hasAvailability() {
			return availability;
		}
		
		public boolean hasExhaustedCheckups() {
			return exhaustedCheckups;
		}
		
	}
	
	public ScheduledEvent makeAppointment(User user, Date from, int duration, ScheduledEvent.Type type);
	
	public ScheduledEvent cancelAppointment(User user, Date from);
	
	public ScheduledEvent changeAvailability(User user, Date from, Date to, boolean available);
	
	public ClinicStatus clinicStatus(User user, Date time);
	
}
